/*
 * @Author       : wangjunjun
 * @Date         : 2024-02-27
 * @copyleft Apache 2.0
 */
#ifndef CONFIGMANAGER_H
#define CONFIGMANAGER_H
#include <memory>
#include "json/json.h"
#include "json/value.h"
#include <string>
#include <mutex>
class CConfigManager{
public:
    //设置单例模式
    static  std::shared_ptr<CConfigManager> GetInstance();
    //loadConfig
    //param[in] strConfigFilePath : 设备配置其文件路径
    //param[out] jsnConfig : 设备配置
    //result : true 成功 false: 失败
    virtual bool loadConfig(const std::string & strConfigFilePath, Json::Value & jsnConfig);

    //getConfig
    //param[in] strConfigName : 设备配置其文件路径
    //param[out] jsnConfig : 具体配置
    //result : true 成功 false: 失败
    virtual bool getConfig(const std::string & strConfigName, Json::Value & jsnConfig);

    //setConfig
    //param[in] strConfigName : 设备配置其文件路径
    //param[out] jsnConfig : 具体配置
    //result : true 成功 false: 失败
    virtual bool setConfig(const std::string & strConfigName, Json::Value & jsnConfig);
    void gets();
private:
    CConfigManager();
    ~CConfigManager();
private:
    std::string m_strConfigPath;
    Json::Value m_jsnConfig;
    static std::shared_ptr<CConfigManager> mInstance;
    static std::once_flag mflag;
};
#endif //CONFIGMANAGER_H
